Flash memory devices have developed into a popular source of non-volatile memory for a wide range of electronic applications. Flash memory devices typically use a one-transistor memory cell that allows for high memory densities, high reliability, and low power consumption. Changes in threshold voltage of the cells, through programming (which is sometimes referred to as writing) of charge storage structures (e.g., floating gates or charge traps) or other physical phenomena (e.g., phase change or polarization), determine the data value of each cell. Common uses for flash memory include personal computers, personal digital assistants (PDAs), digital cameras, digital media players, cellular telephones, and removable memory modules, and the uses for flash memory continue to expand.
Flash memory typically utilizes one of two basic architectures known as NOR Flash and NAND Flash. The designation is derived from the logic used to read the devices. FIG. 1 illustrates a NAND type flash memory array architecture 100 wherein the floating gate memory cells 102 of the memory array are logically arranged in an array of rows and columns. In a conventional NAND Flash architecture, “rows” refers to memory cells having commonly coupled control gates, while “columns” refers to memory cells coupled as one or more NAND strings of memory cells 102, for example. The memory cells 102 of the array are arranged together in strings (e.g., NAND strings), typically of 8, 16, 32, or more each. Memory cells of a string are connected together in series, source to drain, between a source line 114 and a data line 116, often referred to as a bit line. Each series string of memory cells is coupled to source line 114 by a source select gate such as select gates 110 and to an individual bit line 116 by drain select gates 104, for example. The source select gates 110 are controlled by a source select gate (SGS) control line 112 coupled to their control gates. The drain select gates 104 are controlled by a drain select gate (SGD) control line 106. The one or more strings of memory cells are also typically arranged in groups (e.g., blocks) of memory cells.
The memory array is accessed by a string driver (not shown) configured to activate a logical row of memory cells by selecting a particular access line 118, often referred to as a word line, such as WL7-WL0 1187-0, for example. Each word line 118 is coupled to the control gates of a row of memory cells 120. Bit lines BL1-BL4 1161-1164 can be driven high or low depending on the type of operation being performed on the array. As is known to those skilled in the art, the number of word lines and bit lines might be much greater than those shown in FIG. 1.
Memory cells 102 can be configured as what are known in the art as Single Level Memory Cells (SLC) or Multilevel Memory Cells (MLC). SLC and MLC memory cells assign a data state (e.g., as represented by one or more bits) to a specific range of threshold voltages (Vt) stored on the memory cells. Single level memory cells (SLC) permit the storage of a single binary digit (e.g., bit) of data on each memory cell. Meanwhile, MLC technology permits the storage of two or more binary digits per cell (e.g., 2, 4, 8, 16 bits), depending on the quantity of Vt ranges assigned to the cell and the stability of the assigned Vt ranges during the lifetime operation of the memory cell. By way of example, one bit (e.g., 1 or 0) may be represented by two Vt ranges, two bits by four ranges, three bits by eight ranges, etc.
Programming typically involves applying one or more programming pulses (VPGM) to a selected word line, such as 1184, and thus to the control gate of each memory cell 120 coupled to the selected word line. Typical programming pulses (VPGM) start at or near 15V and tend to increase in magnitude during each programming pulse application. While the program voltage (e.g., programming pulse) is applied to the selected word line, a potential, such as a ground potential, is applied to the substrate, and thus to the channels of these memory cells, resulting in a charge transfer from the channel to the floating gates of memory cells targeted for programming. More specifically, the floating gates are typically charged through direct injection or Fowler-Nordheim tunneling of electrons from the channel to the floating gate, resulting in a Vt typically greater than zero in a programmed state, for example. In the example of FIG. 1, a VPASS voltage is applied to each unselected word line 1187-1185,1183-1180. VPASS might be 10V, for example. The VPASS applied to each unselected word line might be different voltages. For example, a word line adjacent to the selected word line might be biased to a VPASS potential of 8V. The next adjacent word line might be biased to 7V and the next adjacent word line might be biased to 0V, for example. The VPASS voltages are not high enough to cause programming of memory cells biased with a VPASS voltage.
An inhibit voltage is typically applied to bit lines (e.g., Vcc) not coupled to a NAND string containing a memory cell that is targeted for programming. During a programming operation alternate bit lines are enabled and inhibited from programming. For example, even numbered bit lines might be enabled for programming memory cells coupled to even numbered bit lines while the odd numbered bit lines are inhibited from programming memory cells coupled to the odd numbered bit lines. A subsequent programming operation then inhibits the even numbered bit lines and enables the odd numbered bit lines. For example, memory cells 1201 and 1203 are selected for programming and memory cells 1202 and 1204 are inhibited from programming as shown in FIG. 1. During a typical programming operation, the word lines adjacent to the selected word line are biased to one of a number of voltages (e.g., VPASS).
Between the application of one or more programming (e.g., VPGM) pulses, a verify operation is performed to check each selected memory cell to determine if it has reached its intended programmed state. If a selected memory cell has reached its intended programmed state it is inhibited from further programming if there remain other memory cells of the selected row still requiring additional programming pulses to reach their intended programmed states. Following a verify operation, an additional programming pulse VPGM is applied if there are memory cells that have not completed programming. This process of applying a programming pulse followed by performing a verify operation continues until all the selected memory cells have reached their intended programmed states. If a particular number of programming pulses (e.g., maximum number) have been applied and one or more selected memory cells still have not completed programming, those memory cells might be marked as defective, for example.
Bit lines BL1-BL4 116 are coupled to sensing devices (e.g., sense amplifiers) 130 that detect the state of each cell by sensing voltage or current on a particular bit line 116. The word lines WL7-WL0 118 select the individual memory cells 102 in the series strings to be written to or read from and operate the remaining memory cells in each series string in a pass through mode.
During the development phase of memory devices, it is unknown what a preferred pattern of VPASS voltages to be applied for a given selected word line 1184 will be. Thus, a prototype device may be constructed utilizing an estimated pattern of VPASS voltages to be applied during programming operations of the memory device, for example. These patterns are “hard-wired” into a metal mask of the device. Thus, if the estimated pattern needs to be changed, a new device having a new metal mask is required. Having to wait for a new prototype to be manufactured can be costly in both time and money.
For the reasons stated above, and for other reasons which will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art, for example, for methods and apparatus to facilitate efficient testing of various memory device operations without requiring hardware changes.